#pragma once 

#include <windows.h>
#include <commctrl.h>
#include <ole2.h>
#include <GdiPlus.h>

#include <type_traits>
#include <typeinfo>

#include <boost/unordered_map.hpp>
#include <boost/tuple/tuple.hpp>
#include <boost/thread.hpp>
#include <boost/thread/mutex.hpp>

#include <boost/signal.hpp>
#include <boost/bind.hpp>
#include <boost/utility.hpp>
#include <boost/any.hpp>

#include "winboost_unicode.hpp"
#include "winboost_resources.hpp"
#include "trace.hpp"

namespace winboost {

inline HINSTANCE instance_handle(void)
{
   return ::GetModuleHandle(NULL);
}

class window_exception : public std::runtime_error
{
public:
   explicit window_exception(const std::string& _Message):std::runtime_error(_Message){}
};

enum e_message_hint
{
   update_ui_command = -1,
   disable_unhandled_commands = -2,
   do_not_route_further = 3,
   message_not_mapped, // massage is not found in the map
};

}


